#ifndef UTILS_H
#define UTILS_H

#include <QString>
#include <QMessageBox>
#include <QWidget>
#include <Windows.h>
#include <Cfgmgr32.h>

namespace Utils {
    char *STRTOK_R(char *pStr, const char *pDelims, char **ppSave);
    bool StrToInt(const char *pStr, int *pNum);

    // 通用复用的确认对话框
    bool askYesNoDialog(const QString &title,
                        const QString &text,
                        QMessageBox::StandardButtons buttons = QMessageBox::Yes | QMessageBox::No,
                        QMessageBox::StandardButton defaultButton = QMessageBox::Yes,
                        QWidget *parent = nullptr);

    // 询问：确定/取消，返回 IDCANCEL 或 IDCONTINUE
    int askOkCancelDialog(const QString &title,
                          const QString &text,
                          QWidget *parent = nullptr);

    // 询问：取消/重试/继续，返回 IDCANCEL、IDTRYAGAIN 或 IDCONTINUE
    int askCancelTryContinueDialog(const QString &title,
                                   const QString &text,
                                   QWidget *parent = nullptr);

    // 将 Win32 错误码转换为可读字符串（含错误码）
    QString formatWinError(DWORD errorCode);

    // 将 CfgMgr32 的 CONFIGRET 错误码转换为可读字符串（含错误码）
    QString formatCfgMgrError(CONFIGRET cr);
}

#endif // UTILS_H
